package com.wo.cloud.core.util;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;

import java.util.Base64;

/**
 * @author liry
 * @version 1.0
 * @date Created on 2021/4/29 22:59
 * Description: Token工具类
 */
public class TokenUtil {

    //	public static String BEARER = "bearer";
    public static Integer AUTH_LENGTH = 7;

    /**
     * 获取token串
     *
     * @param auth token
     * @return String
     */
    public static String getToken(String auth) {
        if ((auth != null) && (auth.length() > AUTH_LENGTH)) {
            String headStr = auth.substring(0, 6).toLowerCase();
            if (headStr.compareTo(Oauth2Constant.TOKEN_TYPE) == 0) {
                auth = auth.substring(7);
            }
            return auth;
        }
        return null;
    }

    /**
     * 获取jwt中的claims信息
     * claims中可以自定义数据信息和标准注册中的声明数据（比如: iss签发者信息，exp过期信息）
     *
     * @param token
     * @return claim
     */
    // TODO
    public static Claims getClaims(String token) {
        String key = Base64.getEncoder().encodeToString(Oauth2Constant.TOKEN_TYPE.getBytes());
        Claims claims = Jwts.parser().setSigningKey(key).parseClaimsJws(token).getBody();
        return claims;
    }
}
